package com.storage.system.service;

import com.storage.common.core.domain.AjaxResult;
import com.storage.common.core.domain.ServiceResponse;
import com.storage.common.core.page.TableDataInfo;
import com.storage.system.domain.StorageGoods;
import com.storage.system.domain.StorageImage;
import com.storage.system.domain.StorageProduct;
import com.storage.system.domain.StorageUser;

import java.util.List;
import java.util.Map;

/**
 * 产品 服务层
 *
 * @author ruoyi
 * @date 2019-08-26
 */
public interface IStorageProductService {
    /**
     * 查询产品信息
     *
     * @param id 产品ID
     * @return 产品信息
     */
    public StorageProduct selectStorageProductById(Long id);

    /**
     * 查询产品列表
     *
     * @param storageProduct 产品信息
     * @return 产品集合
     */
    public ServiceResponse<TableDataInfo> selectStorageProductList(StorageUser currentUser, StorageProduct storageProduct, Integer pageNum, Integer pageSize);

    /**
     * 修改产品
     *
     * @param storageProduct 产品信息
     * @return 结果
     */
    public AjaxResult updateStorageProduct(StorageUser currentUser, String storageProduct);

    /**
     * 删除产品信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public AjaxResult deleteStorageProductByIds(StorageUser currentUser, String ids);

    /**
     * 修改产品
     *
     * @param storageGoods 产品信息
     * @return 结果
     */
    public AjaxResult updateStorageGoods(StorageUser currentUser, StorageGoods storageGoods);

    /**
     * 删除商品信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public AjaxResult deleteStorageGoodsByIds(StorageUser currentUser, String ids);

    /**
     * 上传图片
     *
     * @param currentUser
     * @param image
     * @return
     */
    AjaxResult uploadImage(StorageUser currentUser, StorageImage image);

    /**
     * 查询代理商商品列表
     *
     * @param currentUser
     * @param storageProduct
     * @return
     */
    ServiceResponse<TableDataInfo> selectAgentProductList(StorageUser currentUser, StorageProduct storageProduct, Integer pageNum, Integer pageSize);

    /**
     * 获取指定代理商库存中的商品品牌集合
     *
     * @param storageUser
     * @param providerUserId
     * @return
     */
    ServiceResponse<List<String>> getSelectBrandValues(StorageUser storageUser, Long providerUserId);

    /**
     * 客户端库存管理title - 总金额、颜色、货号总数
     *
     * @param storageUser
     * @return
     */
//    ServiceResponse<Map<String, Object>> getStorageDetailInfo(StorageUser storageUser);

    /**
     * 查询当前商品在代理商管辖的店铺中的销售比例
     */
    ServiceResponse<AjaxResult> getProductShopSellDetail(StorageUser storageUser, String productSkuCode);

    /**
     * pc 店铺销售
     *
     * @param storageUser
     * @param productSkuCode
     * @param shopId
     * @return
     */
    ServiceResponse<AjaxResult> getProductShopSellDetailV2(StorageUser storageUser, String productSkuCode, Long shopId);

    /**
     * 更新产品状态
     *
     * @param products
     * @return
     */
    AjaxResult updateProductStatus(StorageUser storageUser, StorageProduct products);
}
